package com.csw.android.dev_utils

import android.app.Application
import android.content.Context
import androidx.startup.Initializer

/**
 * 通过startup组件，在初始化应用时自动初始化框架
 *
 * 需要将此框架初始化类通过清单文件添加到startup组件中，其原理通过contentProvider在app初始化时获取应用程序上下文，自动
 * 初始化框架，不再需要app手动调用，一般也就一些写框架的会用到，牛逼牛逼。
 */
class DevUtilsInitializer: Initializer<Unit> {
    /**
     * 创建组件，Initializer<T>泛型用于定义创建的框架对象，貌似可以不写，直接kotlin Unit
     * context打了断点一看是Application，没啥问题，毕竟才初始化啥都没。
     */
    override fun create(context: Context) {
        val ac = context.applicationContext
        if(ac is Application){
            SDK.init(ac)
        }
    }

    /**
     * 定义框架是否依赖其他框架，会等待其他框架初始化后才初始化此框架
     */
    override fun dependencies(): MutableList<Class<out Initializer<*>>> {
        return arrayListOf()
    }
}